9 research outputs found
Modularizing and Specifying Protocols among Threads
We identify three problems with current techniques for implementing protocols
among threads, which complicate and impair the scalability of multicore
software development: implementing synchronization, implementing coordination,
and modularizing protocols. To mend these deficiencies, we argue for the use of
domain-specific languages (DSL) based on existing models of concurrency. To
demonstrate the feasibility of this proposal, we explain how to use the model
of concurrency Reo as a high-level protocol DSL, which offers appropriate
abstractions and a natural separation of protocols and computations. We
describe a Reo-to-Java compiler and illustrate its use through examples.Comment: In Proceedings PLACES 2012, arXiv:1302.579
Toward Sequentializing Overparallelized Protocol Code
In our ongoing work, we use constraint automata to compile protocol
specifications expressed as Reo connectors into efficient executable code,
e.g., in C. We have by now studied this automata based compilation approach
rather well, and have devised effective solutions to some of its problems.
Because our approach is based on constraint automata, the approach, its
problems, and our solutions are in fact useful and relevant well beyond the
specific case of compiling Reo. In this short paper, we identify and analyze
two such rather unexpected problems.Comment: In Proceedings ICE 2014, arXiv:1410.701
Data optimizations for constraint automata
Constraint automata (CA) constitute a coordination model based on finite
automata on infinite words. Originally introduced for modeling of coordinators,
an interesting new application of CAs is implementing coordinators (i.e.,
compiling CAs into executable code). Such an approach guarantees
correctness-by-construction and can even yield code that outperforms
hand-crafted code. The extent to which these two potential advantages
materialize depends on the smartness of CA-compilers and the existence of
proofs of their correctness.
Every transition in a CA is labeled by a "data constraint" that specifies an
atomic data-flow between coordinated processes as a first-order formula. At
run-time, compiler-generated code must handle data constraints as efficiently
as possible. In this paper, we present, and prove the correctness of two
optimization techniques for CA-compilers related to handling of data
constraints: a reduction to eliminate redundant variables and a translation
from (declarative) data constraints to (imperative) data commands expressed in
a small sequential language. Through experiments, we show that these
optimization techniques can have a positive impact on performance of generated
executable code
Partially distributed coordination with Reo and constraint automata
Algorithms and the Foundations of Software technolog
Data optimizations for constraint automata
Constraint automata (CA) constitute a coordination model based on finite
automata on infinite words. Originally introduced for modeling of coordinators,
an interesting new application of CAs is implementing coordinators (i.e.,
compiling CAs into executable code). Such an approach guarantees
correctness-by-construction and can even yield code that outperforms
hand-crafted code. The extent to which these two potential advantages
materialize depends on the smartness of CA-compilers and the existence of
proofs of their correctness.
Every transition in a CA is labeled by a "data constraint" that specifies an
atomic data-flow between coordinated processes as a first-order formula. At
run-time, compiler-generated code must handle data constraints as efficiently
as possible. In this paper, we present, and prove the correctness of two
optimization techniques for CA-compilers related to handling of data
constraints: a reduction to eliminate redundant variables and a translation
from (declarative) data constraints to (imperative) data commands expressed in
a small sequential language. Through experiments, we show that these
optimization techniques can have a positive impact on performance of generated
executable code
Data optimizations for constraint automata
Constraint automata (CA) constitute a coordination model based on finiteautomata on infinite words. Originally introduced for modeling of coordinators,an interesting new application of CAs is implementing coordinators (i.e.,compiling CAs into executable code). Such an approach guaranteescorrectness-by-construction and can even yield code that outperformshand-crafted code. The extent to which these two potential advantagesmaterialize depends on the smartness of CA-compilers and the existence ofproofs of their correctness. Every transition in a CA is labeled by a "data constraint" that specifies anatomic data-flow between coordinated processes as a first-order formula. Atrun-time, compiler-generated code must handle data constraints as efficientlyas possible. In this paper, we present, and prove the correctness of twooptimization techniques for CA-compilers related to handling of dataconstraints: a reduction to eliminate redundant variables and a translationfrom (declarative) data constraints to (imperative) data commands expressed ina small sequential language. Through experiments, we show that theseoptimization techniques can have a positive impact on performance of generatedexecutable code
Rule-Based Form for Stream Constraints
International audienceConstraint automata specify protocols as labeled transition systems that preserve synchronization under composition. They have been used as a basis for tools, such as compilers and model checkers. Unfortunately, composition of transition systems suffers from state space and transition space explosions, which limits scalability of the tools based on constraint automata. In this work, we propose stream constraints as an alternative to constraint automata that avoids state space explosions. We introduce a rule-based form for stream constraints that can avoid transition space explosions. We provide sufficient conditions under which our approach avoids transition space explosions